iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

🦕Object-Oriented-Programing : Encapsulation 封裝

封裝 Encapsulation 被定義為數據包成一包,將代碼 code 和操作的數據綁
再一起的機制。

考慮封裝的另一種方式,是一個保護屏障,可以防止數據被該屏蔽之外的 code 訪問或更動。

通常會將 attributes 盡可能設定成 private,若要從外部更改、存取則使用 setter、getter methods。

✨透過 getter 跟 setter 來對物件做封裝✨

🦕Object-Oriented-Programing : Inheritance 繼承

再 Java 中,可以將 attributes 和 methods 從一個 class 繼承到另一個 class,這個過程稱為 inheritance

super 繼承的物件和父類不是在同一個記憶體位置,可以用 instanceof 來查看

避免寫過多重複的程式碼

  1. subclass (子類) | 從另一個 class 繼承的 classs,也稱 child class
  2. superclass (父類) | 繼承自 class,也稱 parent class

Chid class 會比 parent class 還要有更多訊息,發現 …is a … 可以用 extends 關鍵字 來做 inheritance 繼承

Java 只能做單一繼承 single inheritance ,一個 clss 最多只能繼承一個 parent class

權限關鍵字 與 範圍

關鍵字 內部類別 相同套件類別 不同套件類別
public 可存取 可存取 可存取
private 可存取 不可存取 不可存取
protected 可存取 可存取 子類別可存取
可存取 可存取 不可存取

簡單來說,權限依小至大區分 : private → 無 → protected → public
如果一開始不確定通常都會先用 private

重新定義方法要注意,父類別中方法權限只能擴大不能縮小

若原來成員 public 子類別重新定義不可為 private 或 protected

✨super✨

  1. 執行superclass 的 constructor |
    如果父類 super class 有預設值 default values 那被子類別 child class 呼叫時就不會error

  2. 執行 superclass 的 method |

    super.method 可以讓child class call super class has method (其實 this or 不寫都可以,但為了閱讀性還是要寫一下)

✨Method Override✨

可以在 chlid class 複寫從 parent class 繼承過來的 method

使用時使用 @Override

✨所有 Java Class 都 inherit from java.lang.Object✨

🦕Object-Oriented-Programing : Polymorphism 多型

Polymoropgism means that a varibale of supertype can refer to a subtype object !!

簡單來說 x is a y,就可以用 y 來 declare x 的 type

Polymoropgism 的好處在,declare 一個 parent class variable ,那 variable 可以用來裝任何 subclass object

多型 與 is-a

子類別只能繼承一個父類別
繼承除了可以避免重複的程式碼以外,子類別 跟 父類別 還會有 is-a 的關係 「是一種」

小知識
Polymorphism 是生物學名詞,只一種物種在同一群族存在兩種或多種明顯不同的樣態。

Polymorphism多型 本質是 Inheritance繼承 概念的延伸,舉例繼承 superclass 後使用 Override 複寫其他 method 的 childcalss 就是多型的概念。


上一篇
Day3|Java 基礎2
系列文
【自我挑戰】CS61B 學習筆記4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言